package ltd.smallwang.client.task.api;

import ltd.smallwang.client.task.dto.TaskAddCmd;
import ltd.smallwang.client.task.dto.TaskCategoryAddCmd;
import ltd.smallwang.client.task.dto.TaskCategoryDto;
import ltd.smallwang.client.task.dto.TaskCategoryUpdateCmd;
import ltd.smallwang.client.task.dto.TaskCompleteChangeCmd;
import ltd.smallwang.client.task.dto.TaskDto;
import ltd.smallwang.client.task.dto.TaskExecuteRecordAddCmd;
import ltd.smallwang.client.task.dto.TaskExecuteRecordDto;
import ltd.smallwang.client.task.dto.TaskExecuteRecordQry;
import ltd.smallwang.client.task.dto.TaskQry;
import ltd.smallwang.client.task.dto.TaskUpdateCmd;

import java.util.List;

/**
 * @author justd
 * @description 功能描述
 * @since 2024-04-14 23:05
 **/
public interface TaskService {
  void createTask(TaskAddCmd taskAddCmd);

  List<TaskDto> queryTasks(TaskQry taskQry);

  void taskCompleteChange(TaskCompleteChangeCmd taskCompleteChangeCmd);

  void deleteTask(List<Long> idList);

  void saveExecuteRecord(TaskExecuteRecordAddCmd taskExecuteRecordAddCmd);

  List<TaskExecuteRecordDto> queryTaskExecuteRecords(TaskExecuteRecordQry taskExecuteRecordQry);

  void updateTask(TaskUpdateCmd taskUpdateCmd);

  TaskDto getTask(Long id);

  List<TaskCategoryDto> queryTaskCategories();

  void insertTaskCategory(TaskCategoryAddCmd taskCategoryAddCmd);

  void batchDeleteTaskCategories(List<Long> idList);

  void updateTaskCategory(TaskCategoryUpdateCmd taskCategoryUpdateCmd);
}
